﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace businessLayer
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "VoertuigService" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select VoertuigService.svc or VoertuigService.svc.cs at the Solution Explorer and start debugging.
    public class VoertuigService : iVoertuig
    {
         public List<Voertuig> GetAlleVoertuigen()
        {
            List<Voertuig> VoertuigenLijst = new List<Voertuig>();
            SqlConnection myConn = null;
            Voertuig alle = new Voertuig();
            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();

                    var cmd = new SqlCommand("Select * from Voertuig", myConn);
                    var reader = cmd.ExecuteReader();



                    while (reader.Read())
                    {
                        int VoertuigID = Convert.ToInt32(reader["VoertuigID"]);
                        string merk = Convert.ToString(reader["merk"]);
                        string type = Convert.ToString(reader["type"]);
                        string motorisatie = Convert.ToString(reader["motorisatie"]);
                        string brandstof = Convert.ToString(reader["brandstof"]);
                        int deuren = (int)reader["deuren"];
                        float km = float.Parse(Convert.ToString(reader["km"]));
                        int filiaalnr = Convert.ToInt32(reader["filiaalnr"]);

                        Voertuig v = new Voertuig { VoertuigID = VoertuigID, merk = merk, type = type, motorisatie = motorisatie, brandstof = brandstof, deuren = deuren, km = km, filiaalnr = filiaalnr };
                        VoertuigenLijst.Add(v);
                    }
                    
                    reader.Close();
                    cmd.Dispose();




                }
            }

            catch (SqlException ex)
            {
                throw;
            }
            return VoertuigenLijst;
        }

        public bool updateVoertuig(Voertuig TeWijzigenVoertuig)
        {
            List<Voertuig> VoertuigenLijst = new List<Voertuig>();
            SqlConnection myConn = null;
            Voertuig alle = new Voertuig();
            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();
                    
                   // var cmd = new SqlCommand("update table Voertuig where Voertuigid = "+ voertuigNummer , myConn);
                    string update = "UPDATE Voertuig SET " +
                            "merk = @merk, " +
                            "type = @type, " +
                            "motorisatie = @motorisatie, " +
                            "brandstof = @brandstof, " +
                            "deuren = @deuren " +
                            "km = @km " +
                            "filiaalnr = @filiaalnr"+
                            "WHERE VoertuigID = @OldVoertuigID ";
                     SqlCommand updateCommand = new SqlCommand(update, myConn);

                    var cmd = new SqlCommand(update);
                    cmd.Parameters.AddWithValue("@merk", TeWijzigenVoertuig.merk);
                    cmd.Parameters.AddWithValue("@type", TeWijzigenVoertuig.type);
                    cmd.Parameters.AddWithValue("@motorisatie", TeWijzigenVoertuig.motorisatie);
                    cmd.Parameters.AddWithValue("@brandstof", TeWijzigenVoertuig.brandstof);
                    cmd.Parameters.AddWithValue("@deuren", TeWijzigenVoertuig.deuren);
                    cmd.Parameters.AddWithValue("@km", TeWijzigenVoertuig.km);
                    cmd.Parameters.AddWithValue("@filiaalnr", TeWijzigenVoertuig.filiaalnr);
                    cmd.ExecuteNonQuery();
                    cmd.Dispose();




                }
            }

            catch (SqlException ex)
            {
                throw;
            }
            return true;
            //return VoertuigenLijst;
        }

        

       /* public bool dropVoertuig(int VoertuigID)
        {
            SqlConnection conn = new SqlConnection(BPcars.GetConnection());

            List<SqlParameter> sqlParams = new List<SqlParameter>();
            sqlParams.Add(new SqlParameter("@VoertuigID", VoertuigID));
            //DataSet ds = conn.ChangeDatabase(businessLayer.Voertuig);
            //("DeleteCustomer", sqlParams);
            if (ds != null)
                return true;
            else return false;
        }*/
       
        public bool InsertVoertuig(Voertuig voertuig)
        {
            SqlConnection connection = null;
            string insert = "insert into Voertuig (merk,type,motorisatie,brandstof, deuren, km, filiaalnr)" +
                            "Values(@merk,@type,@motorisatie,@brandstof,@deuren,@km,@filiaalnr);";
            try
            {
                using (connection = new SqlConnection(BPcars.GetConnection()))
                {
                    connection.Open();
                    SqlCommand insertCommand = new SqlCommand(insert, connection);
                    //insertCommand.Parameters.AddWithValue("@VoertuigID", voertuig.VoertuigID);
                    insertCommand.Parameters.AddWithValue("@merk", voertuig.merk);
                    insertCommand.Parameters.AddWithValue("@type", voertuig.type);
                    insertCommand.Parameters.AddWithValue("@motorisatie", voertuig.motorisatie);
                    insertCommand.Parameters.AddWithValue("@brandstof", voertuig.brandstof);
                    insertCommand.Parameters.AddWithValue("@deuren", voertuig.deuren);
                    insertCommand.Parameters.AddWithValue("@km", voertuig.km);
                    insertCommand.Parameters.AddWithValue("@filiaalnr", voertuig.filiaalnr);

                    int count = insertCommand.ExecuteNonQuery();
                    if (count > 0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            catch (SqlException ex)
            {
                throw;
            }
            finally
            {
                connection.Close();
            }
        }

        public bool DeleteVoertuig(int id)
        {
            SqlConnection connection = new SqlConnection(BPcars.GetConnection());
            string delete = "DELETE FROM Voertuig " +
                            "WHERE VoertuigID = @VoertuigID"; ;
            SqlCommand deleteCommand = new SqlCommand(delete, connection);
            deleteCommand.Parameters.AddWithValue("@VoertuigID", id);
            try
            {
                connection.Open();
                int count = deleteCommand.ExecuteNonQuery();
                if (count > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (SqlException ex)
            {
                throw;
            }
            finally
            {
                connection.Close();
            }
        }

        public List<Voertuig> GetAlleVoertuigenFiliaal(int Filiaalid)
        {
            List<Voertuig> VoertuigenLijst = new List<Voertuig>();
            SqlConnection myConn = null;
            Voertuig alle = new Voertuig();
            try
            {
                using (myConn = new SqlConnection(BPcars.GetConnection()))
                {
                    myConn.Open();

                    var cmd = new SqlCommand("Select * from Voertuig where filiaalnr="+Filiaalid, myConn);
                    var reader = cmd.ExecuteReader();



                    while (reader.Read())
                    {
                        int VoertuigID = Convert.ToInt32(reader["VoertuigID"]);
                        string merk = Convert.ToString(reader["merk"]);
                        string type = Convert.ToString(reader["type"]);
                        string motorisatie = Convert.ToString(reader["motorisatie"]);
                        string brandstof = Convert.ToString(reader["brandstof"]);
                        int deuren = (int)reader["deuren"];
                        float km = float.Parse(Convert.ToString(reader["km"]));
                        int filiaalnr = Convert.ToInt32(reader["filiaalnr"]);

                        Voertuig v = new Voertuig { VoertuigID = VoertuigID, merk = merk, type = type, motorisatie = motorisatie, brandstof = brandstof, deuren = deuren, km = km, filiaalnr = filiaalnr };
                        VoertuigenLijst.Add(v);
                    }

                    reader.Close();
                    cmd.Dispose();




                }
            }

            catch (SqlException ex)
            {
                throw;
            }
            return VoertuigenLijst;
        }
        }
}
